package net.sudot.commons.security;


import net.sudot.chess.business.model.User;

import java.util.Set;

/**
 * 认证Provider
 *
 * @author tangjialin on 2017-06-14 0014.
 */
public interface AuthenticationProvider {

    /**
     * 获取认证用户
     *
     * @param principal 认证主体信息
     * @return 返回符合条件的所有用户
     */
    User getUser(Object principal);

    /**
     * 获取用户权限
     *
     * @param principal 认证主体信息
     * @return 权限
     */
    Set<String> getPermissions(Object principal);

    /**
     * 获取用户角色
     *
     * @param principal 认证主体信息
     * @return 角色
     */
    Set<String> getRoles(Object principal);
}